"""
快速编译脚本 - 编译 simple_optical_flow.py 为 .pyc 文件
"""

import py_compile
import os
import sys

def compile_optical_flow():
    """编译 simple_optical_flow.py 为 .pyc 文件"""
    
    source_file = 'simple_optical_flow.py'
    compiled_file = 'simple_optical_flow.pyc'
    
    print("正在编译 SimpleOpticalFlow...")
    print("="*50)
    
    # 检查源文件是否存在
    if not os.path.exists(source_file):
        print(f"✗ 错误: 找不到源文件 '{source_file}'")
        print("请确保 simple_optical_flow.py 文件在当前目录中")
        return False
    
    # 显示源文件信息
    source_size = os.path.getsize(source_file)
    print(f"✓ 找到源文件: {source_file}")
    print(f"✓ 源文件大小: {source_size} 字节")
    
    try:
        # 编译源文件
        py_compile.compile(source_file, compiled_file)
        
        # 验证编译结果
        if os.path.exists(compiled_file):
            compiled_size = os.path.getsize(compiled_file)
            print(f"✓ 编译成功: {compiled_file}")
            print(f"✓ 编译后大小: {compiled_size} 字节")
            
            # 计算压缩比
            compression_ratio = (1 - compiled_size / source_size) * 100
            print(f"✓ 压缩比: {compression_ratio:.1f}%")
            
            return True
        else:
            print("✗ 编译失败: 未生成 .pyc 文件")
            return False
            
    except SyntaxError as e:
        print(f"✗ 语法错误: {e}")
        print(f"   文件: {e.filename}")
        print(f"   行号: {e.lineno}")
        print(f"   位置: {e.offset}")
        return False
        
    except Exception as e:
        print(f"✗ 编译失败: {e}")
        return False

def show_usage_info():
    """显示使用说明"""
    print("\n" + "="*50)
    print("编译完成! 使用方法:")
    print("="*50)
    print("1. 导入模块:")
    print("   from simple_optical_flow import SimpleOpticalFlow")
    print()
    print("2. 创建传感器:")
    print("   sensor = SimpleOpticalFlow()")
    print()
    print("3. 获取光流数据:")
    print("   flow_matrix = sensor.get_flow()")
    print("   magnitude = sensor.get_flow_magnitude()")
    print("   stats = sensor.calculate_flow_statistics()")
    print()
    print("4. 显示光流:")
    print("   sensor.show_flow()  # 黑白矢量场")
    print("   sensor.show_flow_colored()  # 彩色矢量场")
    print()
    print("5. 停止传感器:")
    print("   sensor.stop()")

def main():
    """主函数"""
    print("SimpleOpticalFlow 编译工具")
    print("="*50)
    
    # 编译文件
    success = compile_optical_flow()
    
    if success:
        show_usage_info()
        print("\n✓ 所有操作完成!")
    else:
        print("\n✗ 编译失败，请检查源文件")
        sys.exit(1)

if __name__ == "__main__":
    main()